using System;
using System.Text;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using WCSFContrib.ECommerceCatalog.Admin.Interfaces.Services;
using WCSFContrib.ECommerceCatalog.BusinessEntities;


namespace WCSFContrib.ECommerceCatalog.User.Tests.Fakes
{
    public class FakeUsersProfilesService : IUsersProfilesService
    {
        #region IUsersProfilesService Members

        public void CreateUserProfile(string userName)
        {
            throw new Exception("The method or operation is not implemented.");
        }

        public ICollection<BusinessEntities.UserProfile> AllUsersProfiles
        {
            get { throw new Exception("The method or operation is not implemented."); }
        }

        public BusinessEntities.UserProfile GetUserProfileById(int userProfileId)
        {
            throw new Exception("The method or operation is not implemented.");
        }

        public BusinessEntities.UserProfile GetUserProfileByUserName(string userName)
        {
            if (userName != "userTest")
                return null;
            
            Collection<Address> addressList = new Collection<Address>();
            Collection<Payment> paymentList = new Collection<Payment>();

            addressList.Add(new Address());
            addressList.Add(new Address());

            paymentList.Add(new Payment());

            return new UserProfile(1, userName, addressList, paymentList);
        }

        public void AddAddress(int userProfileId, BusinessEntities.Address address)
        {
            throw new Exception("The method or operation is not implemented.");
        }

        public void RemoveAddress(int userProfileId, int addressId)
        {
            throw new Exception("The method or operation is not implemented.");
        }

        public void UpdateAddress(int userProfileId, BusinessEntities.Address address)
        {
            throw new Exception("The method or operation is not implemented.");
        }

        public void AddPaymentMethod(int userProfileId, BusinessEntities.Payment payment)
        {
            throw new Exception("The method or operation is not implemented.");
        }

        public void RemovePaymentMethod(int userProfileId, int paymentId)
        {
            throw new Exception("The method or operation is not implemented.");
        }

        public void UpdatePaymentMethod(int userProfileId, BusinessEntities.Payment payment)
        {
            throw new Exception("The method or operation is not implemented.");
        }

        public BusinessEntities.Address GetAddressById(int addressId)
        {
            throw new Exception("The method or operation is not implemented.");
        }

        public BusinessEntities.Payment GetPaymentById(int paymentId)
        {
            throw new Exception("The method or operation is not implemented.");
        }

        #endregion
    }
}
